/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package tests;

import java.util.ArrayList;

/**
 *
 * @author luis
 */
public class Snake {

    /**
     *
     * @param posiciones
     */
    public void draw(ArrayList<ClassCoor> posiciones){
        boolean bandera = false;
        for (int i = 0; i < 20; i++) {
            for (int j = 0; j < 200; j++) {
                for (ClassCoor item : posiciones) {
                    if(item.coor1==i && item.coor2==j){
                        bandera = true;
                        break;
                    }
                    else{
                        bandera = false;
                    }
                }
                if(bandera){
                   System.out.print("*"); 
                }
                else{
                    System.out.print(" ");
                }
            }
            System.out.printf("\n");
        }
    }
    
    /**
     *
     * @param posiciones
     * @param direccion
     */
    public void UpdatePos(ArrayList<ClassCoor> posiciones, int direccion){
        ClassCoor aux = new ClassCoor(0,0);
        ClassCoor aux2 = new ClassCoor(0,0);
        posiciones.get(posiciones.size()-1).Copy(aux2);
        for (int i = posiciones.size() - 1; i >= 0; i--) {
            aux2.Copy(aux);
            if(i>0){
                posiciones.get(i-1).Copy(aux2);
                aux.Copy(posiciones.get(i-1));
            }
            if(i==posiciones.size()-1){
                if(direccion==1) posiciones.get(i).coor1 += -1;
                if(direccion==2) posiciones.get(i).coor1 += +1;
                if(direccion==3) posiciones.get(i).coor2 += +1;
                if(direccion==4) posiciones.get(i).coor2 += -1;
            }
        }
    }
    
    /**
     *
     * @param args
     */
    public static void main(String[] args) {
        int posicion = 1, olddir;
        ArrayList<ClassCoor> posiciones = new ArrayList<>();
        posiciones.add(new ClassCoor(2,2));
        posiciones.add(new ClassCoor(2,3));
        posiciones.add(new ClassCoor(2,4));
        posiciones.add(new ClassCoor(2,5));
        Snake snake = new Snake();
        snake.draw(posiciones);
        olddir=posicion;
        while(true){
            System.out.println("1.Arriba, 2.Abajo, 3.Derecha, 4.Izquierda");
            posicion = Scan.Console.nextInt();
            if(posicion==2 && olddir ==1){
                System.out.println("noup");
                continue;
            }
            if(posicion==1 && olddir ==2){
                System.out.println("noup");
                continue;
            }
            if(posicion==3 && olddir ==4){
                System.out.println("noup");
                continue;
            }
            if(posicion==4 && olddir ==3){
                System.out.println("noup");
                continue;
            }
            snake.UpdatePos(posiciones, posicion);
            snake.draw(posiciones);
            olddir=posicion;
            
            
        }
    }
}
